### 漏洞 - 1 栈溢出 #### 1. 链路定位 * 在整册链路中的位置:用户态内存破坏最经典形态,承接对照 - 2 栈帧与对照 - 5 返回地址。 * 作用:理解超长写入如何越过局部缓冲区覆盖 saved rbp 与返回地址。 #### 2. 前置知识 * 栈帧布局:局部缓冲区→Canary→saved rbp→返回地址。 * 无边界复制函数与有界函数差异。 #### 3. 技术原理 * 向栈上固定大小缓冲区写入超过容量的数据,按栈生长方向先覆盖相邻局部变量,越过 Canary(若有)后覆盖 saved rbp 与返回地址。函数 `ret` 时把被改写的返回地址弹出,控制流转向。 * 【源码漏洞】用 `strcpy`/`gets` 等无边界复制、循环写未校验长度。【配置缺陷】未开栈保护与安全重排。 * 输入边界与方向:外部输入经命令行、网络包或文件行进入函数后落在栈帧内固定大小的局部数组。栈帧由高地址向低地址生长,写入却从缓冲区低地址向高地址推进,方向相反,超长数据沿高地址方向踩过相邻区域。 * 覆盖顺序:用户区填满后先经过对齐填充字节,再到